Online-Academy
Look, Read, Understand, Apply

IO Byte and Character Streams

In Java (and many other programming languages), Character Stream and Byte Stream are two fundamental types of I/O (Input/Output) streams used to read and write data. Here's a clear breakdown:
Byte Stream Used for: Handling raw binary data (images, audio, video, etc.).
Reads/Writes: 1 byte at a time.
Classes:
Input: InputStream, FileInputStream, BufferedInputStream
Output: OutputStream, FileOutputStream, BufferedOutputStream
Encoding: Does not consider character encoding.
Example: Copying an image to another new image
class ImageCopy{
public static void main(String[] paras){
FileInputStream in = new FileInputStream("image.jpg");
FileOutputStream out = new FileOutputStream("copy.jpg");

int byteData;
while ((byteData = in.read()) != -1) {
    out.write(byteData);
}
in.close();
out.close();
}
}
Character Stream Used for: Handling character data (text files).
Reads/Writes: 2 bytes (Unicode characters).
Classes:
Reader: Reader, FileReader, BufferedReader
Writer: Writer, FileWriter, BufferedWriter
Encoding: Handles character encoding (like UTF-8, UTF-16).
Example: copying content of one file to another file.
class CopyFile{
public static void main(String[] ooo){
FileReader reader = new FileReader("text.txt");
FileWriter writer = new FileWriter("copy.txt");

int charData;
while ((charData = reader.read()) != -1) {
    writer.write(charData);
}
reader.close();
writer.close();
}
}
FeatureByte StreamCharacter Stream
Data TypeBinary data Text/Character data
Size per unit 1 byte 2 bytes (Unicode)
Encoding No encoding awareness Aware of character encoding
Base Classes InputStream, OutputStream Reader, Writer
Example Use Image, audio, PDF files .txt, .csv, .xml files